Skip to content

原型模式(Prototype Pattern)

原型模式(Prototype Pattern)是一种创建型设计模式,用于创建对象的方式是通过复制一个现有对象的原型,从而创建新的对象。它通过克隆现有对象来创建新对象,而不是通过构造函数或工厂方法创建。原型模式的核心思想是使用一个现有对象作为蓝图,然后复制这个蓝图以创建新对象。

场景

大对象的创建成本高昂:如果创建一个对象需要复杂的初始化过程或大量资源,复制一个现有对象可能比从头开始创建对象更有效。

对象的配置差异较小:当需要创建多个对象,它们的配置差异很小,只有一些属性值不同,可以使用原型模式来避免重复配置相同的属性。

减少构造函数的调用:通过原型模式,可以减少构造函数的调用次数,提高性能。

实现

js
// 原型对象
const prototype = {
  property1: "Default Value 1",
  property2: "Default Value 2",
  clone: function () {
    const clone = Object.create(this);
    return clone;
  },
};

// 使用原型对象创建新对象
const object1 = prototype.clone();
object1.property1 = "Custom Value 1";

const object2 = prototype.clone();
object2.property2 = "Custom Value 2";

console.log(object1);
console.log(object2);

在上面的示例中,prototype 是原型对象,它定义了默认的属性和一个 clone 方法,该方法克隆原型对象并返回一个新对象。通过调用 clone 方法,可以创建新的对象,并根据需要设置不同的属性值。

原型模式允许你通过复制现有对象的方式来创建新对象,从而减少重复的初始化工作,提高效率。这在某些情况下尤其有用,特别是当对象的构建过程较为复杂或需要耗费大量资源时。